package cn.wuxing.mediation.common.core.domain.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.DateTypeHandler;

import java.io.Serializable;
import java.util.Date;

/**
 * 矛盾纠纷全量实体
 * <p/>
 * 针对数据表all_case_data表，主要用于进行全量库的分页查询。
 *
 * @author kwainoiiii
 */

@Data
@Accessors(chain = true) // 支持链式调用
@TableName("all_case_data")
@EqualsAndHashCode(callSuper = false)
public class AllCaseData implements Serializable {
    @TableField(exist = false)
    private static final long serialVersionUID = 340648000984908895L;
    /**
     * 主键 ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID) // 主键自增
    @JsonIgnore
    private String id;

    /**
     * 纠纷编号
     */
    @JsonProperty("eventCode")
    @TableField("case_code")
    private String eventCode;

    /**
     * 纠纷描述
     */
    @TableField("case_description")
    @JsonProperty("eventDesc")
    private String eventDesc;

    /**
     * 申请人
     */
    @TableField("applicant_name")
    @JsonProperty("dsr")
    private String dsr;

    /**
     * 所属网格
     */
    @TableField("grid_region")
    @JsonProperty("areaId")
    private String areaId;

    @TableField(exist = false)
    private String areaName;

    /**
     * 纠纷类型
     */
    @TableField("case_type")
    @JsonProperty("eventType")
    private String eventType;

    /**
     * 事发时间
     */
    @TableField(value = "event_time",typeHandler = DateTypeHandler.class)
    private Date initiateTime;

    /**
     * 来源系统
     */
    @TableField("source_system")
    private String source;

    /**
     * 业务 ID
     */
    @JsonProperty("id")
    private String businessId;

    /**
     * 业务类型
     */
    @TableField("business_type")
    private String eventCategory;

    /**
     * 业务类型名称
     */
    private String businessTypeName;

    @TableLogic
    private Integer deleted;

    @TableField("business_type")
    private String sourceType;
}
